// 创建 Express 应用
const app = require('express')()

// 创建基于 Express 应用的 webserver
const server = require('http').createServer(app)

// 创建基于 http server 的服务器端 Socket 套接字
const io = require('socket.io')(server)

// 注册事件监听，阻塞，等待客户端连接
// 当有客户端连接时，执行事件处理程序
io.on('connection', (socket) => {
  // socket 代表的是客户端的连接
  console.log('有用户连接上来了')
  // 当客户端断开连接
  socket.on('disconnect', () => {
    console.log('哦豁，走了')
  })

  // 当接收到客户端发送的消息时，触发绑定的自定义事件
  socket.on('onserver', (message) => {
    console.log('接收到客户端的消息：' + message)
    // 将接收到的当前客户端消息转发给每个客户端（广播）
    // 触发在客户端绑定的事件，以向客户端发送消息
    io.emit('onclient', message)
  })
})

// 监听端口
server.listen(3000, () => {
  console.log('Server running at http://127.0.0.1:3000')
})

// 路由
app.get('/', (req, res, next) => {
  res.sendFile(__dirname + "/index.html")
})
